#ifndef DECLARATIONS_H
#define DECLARATIONS_H

#include <string>
#include <map>
#include <deque>

using namespace std;

enum type_name { bool_type, decimal_type, hex_type, string_type, double_type, pointer_type, int_type, error_type };

struct values_struct
{		
	type_name type;
	char name[31];
	union 
	{
		int decimal_value;
		double double_value;
		bool bool_value;
		char string_value[256];
	} value;
};

typedef deque<map<string, values_struct> > symbol_table;

bool findKey(symbol_table& table, string key);
void addSymbol(symbol_table& table, string key, values_struct value);
void pushScope(symbol_table& table);
void popScope(symbol_table& table);

#endif


